package cn.wolfcode.luowowo.article.service;

import cn.wolfcode.luowowo.article.domain.Travel;
import cn.wolfcode.luowowo.article.domain.TravelContent;
import cn.wolfcode.luowowo.article.domain.UserTravel;
import cn.wolfcode.luowowo.common.query.QueryObject;
import cn.wolfcode.luowowo.common.query.TravelQueryObject;
import cn.wolfcode.luowowo.common.util.AjaxResult;
import cn.wolfcode.luowowo.member.domain.UserInfo;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface ITravelService {
    PageInfo<Travel> query(QueryObject qo);

    TravelContent getContent(Long id);

    Travel selectById(Long id);

    List<Travel> listViewnumTop3(Long id);

    AjaxResult saveOrUpdate(Travel travel, UserInfo userInfo);

    List<Travel> list();

    //通过用户id 获取用户游记信息
    PageInfo<Travel> getUserIdTrave(TravelQueryObject qo);
    //获取用户所有的游记的阅读数
    Integer getUserViewnum(Long id);

    Integer getUserReplynum(Long id);

    /**
     * 判断用户是否收藏的该游记,如果没有,收藏,如果有,取消收藏
     * @param user  该用户的id
     * @param travelId  该游记的id
     * @return
     */
    boolean iFavor(UserInfo user,Long travelId);

    /**
     * 通过用户的id查询该用户收藏的所有游记
     * @param qo
     * @return
     */
    PageInfo<Travel> listByUserFavor(TravelQueryObject qo);

    /**
     * 通过游记id,用户id来删除数据库中的关系
     * @param user
     * @param travelId
     * @return
     */
    void deleteIsFavor(UserInfo user,Long travelId);

    /**
     * 通过用户id获取用户名下所有文章总点赞数的方法
     * @param userId
     * @return
     */
    Long selectThumbsupnumTotal(Long userId);

    /**
     * 热数据落地
     * @param travel
     */
    void updateState(Travel travel);
}
